#ifndef GAME__H
#define GAME__H

#pragma once

//#define TRACE(x)	std::cout << "DEBUG: " << x << std::endl;
#define TRACE(x) std::cout << "DEBUG:" << __FILE__ << ":" << __LINE__  << ":" << #x << "=" << x << std::endl;
//#defien TRACE(x, fmt) printf("%s:%u: %s=" fmt, __FILE__, __LINE__, #x, x)

//#undef  MYGUI_LOG_FILENAME
//#define MYGUI_LOG_FILENAME " "

//{{{ External
#include <sys/types.h>
#include <assert.h>
#include <dirent.h>
#include <errno.h>
#include <vector>
#include <list>
#include <map>
#include <string>
#include <cstring>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <cctype>
#include <functional>
#include <cstdlib>
#include <numeric>

//{{{ Ogre
#include <Ogre.h>
#include <OIS.h>

#include "DotSceneLoader.h"

//{{{ CEGUI
#include <CEGUI.h>
#include "RendererModules/Ogre/CEGUIOgreRenderer.h"
#include "RendererModules/Ogre/CEGUIOgreResourceProvider.h"
#include "ScriptingModules/LuaScriptModule/CEGUILua.h"
//}}}

//{{{ MyGUI
//#include "MyGUI_Prerequest.h"
//#include "MyGUI_Platform.h"
//#include "MyGUI_Gui.h"
//#include "MyGUI_Window.h"
//}}}

//{{{ Bullet
#include <btBulletDynamicsCommon.h>
#include "BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h"

#include "BtOgre/BtOgrePG.h"
#include "BtOgre/BtOgreGP.h"
#include "BtOgre/BtOgreExtras.h"
//}}}

//{{{ SigC++
#include <sigc++/sigc++.h>
#include <sigc++/signal.h>
#include <sigc++/signal_base.h>
//}}}

//{{{ Game
#include "App.h"
#include "Console.h"
#include "GenericCamera.h"
#include "HUD.h"
#include "LensFlare.h"

#include "components/Component.h"
#include "components/ComponentContainer.h"
#include "components/ComponentFactory.h"

#include "components/AnimationComponent.h"
#include "components/EnvMapGenerator.h"
#include "components/PhysicsComponent.h"
#include "components/RenderComponent.h"
#include "components/TransformComponent.h"
#include "components/ScriptComponent.h"

#include "core/Countable.h"
#include "core/Object.h"
#include "core/Property.h"

#include "events/Event.h"
#include "events/EventDispatcher.h"

#include "gameobjects/GameLight.h"
#include "gameobjects/GameObject.h"
#include "gamestates/EditorState.h"
#include "gamestates/GameState.h"

#include "managers/InputManager.h"
#include "managers/ScriptManager.h"
#include "managers/SoundManager.h"
#include "managers/EventManager.h"

#include "render/DeferredShading.h"
#include "render/GeomUtils.h"

//#include "script/AngelCodeInterpreter.h"
#include "script/interpreters/JavaScriptInterpreter.h"
#include "script/interpreters/LuaInterpreter.h"

#include "script/glue/JSGlue.h"
#include "script/glue/LuaGlue.h"

#include "selectionbuffer/SelectionBuffer.h"

#include "utils/MeshUtils.h"
#include "utils/Random.h"
#include "utils/MovableText.h"
#include "utils/SceneNodeUtils.h"
#include "utils/ShapeResolver.h"
#include "utils/TransformWidget.h"
#include "utils/ViewportGrid.h"
#include "utils/OBBoxRenderable.h"
//}}}



#endif // GAME_H
